package com.bolehui.base.result;

/**
 * @author chendongjie     email:chendongjie@gz.iscas.ac.cn
 * @version 1.0
 * @ClassName ResultCode
 * @Description
 * @createTime 2024/11/28 9:36
 * Copyright (C) 2021-2022 CASEEDER, All Rights Reserved.
 * 注意：本内容仅限于内部传阅，禁止外泄以及用于其他的商业目的
 */
public enum ResultCode {
    /* 成功 */
    SUCCESS("0", "操作成功"),
    /* 默认失败 */
    FAIL("-1", "操作失败"),
    /**
     * 用户不匹配
     */
    USER_NOT_MATCH("93","用户不匹配"),
    /**
     * 2022-11-14 - zengkai
     */
    UNCERTAIN_FAIL("94", "不确定业务用户"),
    /**
     * 2022-03-30 - zhangyonghui
     */
    VERIFY_FAIL("95", "账号验证失败"),

    /**
     * 2021-12-09 chenjunyuan
     */
    REGISTERED("96", "该手机号已注册，请直接登录"),

    UNBIND_FAIL("97", "未绑定业务用户"),

    LOGIN_FAIL("98", "登陆失败"),

    NO_LOGIN("99", "用户未登录"),

    /**
     * 2022-04-28 lixuan
     */
    DISABLED("100", "该账户已被禁用，请联系管理员"),
    /**
     * 2022-11-14 - zengkai
     */
    NO_USERINFO("101" , "不存在业务用户"),

    //modify by chenjinwen -------将目前账号登录的几种异常情况定义
    LOCKED("101", "该账号已被锁定，请联系管理员"),
    EXPIRED("102", "该账号已过期，请联系管理员"),
    CREDENTIALS_EXPIRED("103", "该账号的登录凭证已过期，请联系管理员"),
    BAD_PASSWORD("104", "用户名或密码错误！"),
    NOT_EXISTS("105", "用户不存在"),
    BAD_VERIFY_CODE("106", "验证码错误"),

    /**
     * 用于保存单据时，可能在扩展中调用了第三方系统的接口，假设调用失败，则返回此种错误  <br>
     * 方便前端区分
     */
    CALLBACK_ERROR("106", "接口回调失败"),

    /**
     * 用于业务错误时，前台能渲染后台封装的错误信息Data
     */
    BUSINESS_ERROR("107", "业务错误"),

    /**
     * 用于状态转换时，当前状态与配置按钮状态不匹配的错误
     */
    CURRENT_STATE_ERROR("110", "当前状态不匹配错误"),

    /**
     * 用于业务数据校验不通过,前端根据错误信息data对页面进行相应处理
     */
    CHECK_DATA_ERROR("111","校验数据不通过"),

    //编码重复
    CODE_REPEAT_ERROR("201", "编码重复"),
    //名称重复
    NAME_REPEAT_ERROR("202", "名称重复"),

    INSUFFICIENT_AUTHORITY("203", "权限不足"),


    //=======================数据上报相关===================
    //未开启配置
    DATA_REPORT_NOT_OPEN("301", "数据上报未开启"),
    //上报数据为空
    DATA_REPORT_EMPTY("302", "上报数据为空"),
    ;


    private String code;
    private String message;

    ResultCode(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * 根据code获取message
     *
     * @param code
     * @return
     */
    public static String getMessageByCode(Integer code) {
        for (ResultCode ele : values()) {
            if (ele.getCode().equals(code)) {
                return ele.getMessage();
            }
        }
        return null;
    }
}
